package com.hdu.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hdu.dto.CourseSearchDTO;
import com.hdu.entity.CoursePublish;
import com.hdu.pojo.PageBean;
import com.hdu.vo.CoursePreviewVo;
import com.hdu.vo.CourseSearchVo;

import java.io.File;

/**
 * 课程预览、发布接口
 */
public interface ICoursePublishService extends IService<CoursePublish> {
    /**
     * 获取课程预览信息
     * @param courseId  课程id
     * @return  CoursePreviewVo
     */
    CoursePreviewVo getCoursePreviewInfo(Long courseId);

    /**
     * 提交审核
     * @param courseId  课程id
     */
    void commitAudit(Long companyId, Long courseId);

    /**
     * 发布课程
     * @param companyId 公司id
     * @param courseId  课程id
     */
    void publishCourse(Long companyId, Long courseId);

    /**
     * 课程静态化
     * @param courseId  课程id
     * @return  静态化文件
     */
    File generateCourseHtml(Long courseId);

    /**
     * 上传课程静态化页面
     * @param courseId  课程id
     * @param file  静态化文件
     */
    void uploadCourseHtml(Long courseId, File file);

    /**
     * 保存课程索引
     * @param courseId  课程id
     * @return Boolean
     */
    Boolean saveCourseIndex(Long courseId);

    CoursePublish getCoursePublish(Long courseId);

    /**
     * 查询缓存中的课程发布信息
     * @param courseId 课程id
     * @return coursePublish 课程发布信息
     */
    CoursePublish getCoursePublishCache(Long courseId);

    /**
     * 课程分类查询接口
     *
     * @param courseSearchVo 查询条件
     * @return PageBean<CourseSearchDTO>
     */
    PageBean<CourseSearchDTO> queryCourseSearchList(Long companyId, CourseSearchVo courseSearchVo);
}
